package com.google.code.lf.gfm.model.grisbi.etat;

import java.util.Date;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import com.google.code.lf.commons.util.ToStringHelper;
import com.google.code.lf.commons.xml.bind.adapter.XmlDateAdapter;

/**
 * Bean représentant un état dans le fichier de données <a href="http://grisbi.org/">Grisbi</a>.
 * <br/>Le binding bean/xml utilise <a href="https://jaxb.dev.java.net/">JAXB</a>.
 * 
 * @see Etats.
 */
@XmlRootElement(name="Etat")
@XmlAccessorType(XmlAccessType.NONE)
@SuppressWarnings("unused")
public class Etat {
	@XmlElement(name="No")
	private int id;

	@XmlElement(name="Nom")
	private String nom;

	@XmlElement(name="Type_classement")
	private String typeClassement;

	@XmlElement(name="Aff_r")
	private int affR;

	@XmlElement(name="Aff_ope")
	private int affOpe;

	@XmlElement(name="Aff_nb_ope")
	private int affNbOpe;

	@XmlElement(name="Aff_no_ope")
	private int affNoOpe;

	@XmlElement(name="Aff_date_ope")
	private int affDateOpe;

	@XmlElement(name="Aff_tiers_ope")
	private int affTiersOpe;

	@XmlElement(name="Aff_categ_ope")
	private int affCategorieOpe;

	@XmlElement(name="Aff_ss_categ_ope")
	private int affSousCategorieOpe;

	@XmlElement(name="Aff_type_ope")
	private int affTypeOpe;

	@XmlElement(name="Aff_ib_ope")
	private int affIbOpe;

	@XmlElement(name="Aff_ss_ib_ope")
	private int affSsIbOpe;

	@XmlElement(name="Aff_cheque_ope")
	private int affChqOpe;

	@XmlElement(name="Aff_notes_ope")
	private int affNotesOpe;

	@XmlElement(name="Aff_pc_ope")
	private int affPcOpe;

	@XmlElement(name="Aff_verif_ope")
	private int affVerifOpe;

	@XmlElement(name="Aff_rappr_ope")
	private int affRapprochementOpe;

	@XmlElement(name="Aff_infobd_ope")
	private int affInfoBdOpe;

	@XmlElement(name="Aff_exo_ope")
	private int affExoOpe;

	@XmlElement(name="Class_ope")
	private int classeOpe;

	@XmlElement(name="Aff_titres_col")
	private int affTitreCol;

	@XmlElement(name="Aff_titres_chgt")
	private int affTitresChgt;

	@XmlElement(name="Pas_detail_ventil")
	private int pasDetailVentil;

	@XmlElement(name="Sep_rev_dep")
	private int sepRevDep;

	@XmlElement(name="Devise_gen")
	private int deviseGen;

	@XmlElement(name="Incl_tiers")
	private int inclTiers;

	@XmlElement(name="Ope_click")
	private int opeClick;

	@XmlElement(name="Exo_date")
	private int exoDate;

	@XmlElement(name="Detail_exo")
	private int detailExo;

	@XmlElement(name="No_exo", nillable=true)
	private String noExo;

	@XmlElement(name="Plage_date")
	private int plageDate;

	@XmlElement(name="Date_debut", nillable=true)
	@XmlJavaTypeAdapter(value=XmlDateAdapter.class)
	private Date dateDebut;

	@XmlElement(name="Date_fin", nillable=true)
	@XmlJavaTypeAdapter(value=XmlDateAdapter.class)
	private Date dateFin;

	@XmlElement(name="Utilise_plages")
	private int utilisePlages;

	@XmlElement(name="Sep_plages")
	private int sepPlages;

	@XmlElement(name="Sep_exo")
	private int sepExo;

	@XmlElement(name="Deb_sem_plages")
	private int debSemPlages;

	@XmlElement(name="Detail_comptes")
	private int detailComptes;

	@XmlElement(name="No_comptes", nillable=true)
	private String idComptes;

	@XmlElement(name="Grp_ope_compte")
	private int grpOpeComptes;

	@XmlElement(name="Total_compte")
	private int totalCompte;

	@XmlElement(name="Aff_nom_compte")
	private int affNomCompte;

	@XmlElement(name="Type_vir")
	private int typVir;

	@XmlElement(name="No_comptes_virements", nillable=true)
	private String noComptesVirement;

	@XmlElement(name="Exclure_non_vir")
	private int exclureNonVir;

	@XmlElement(name="Categ")
	private int categ;

	@XmlElement(name="Detail_categ")
	private int detailCateg;

	@XmlElement(name="No_categ", nillable=true)
	private String noCateg;

	@XmlElement(name="Exclut_categ")
	private int exclutCateg;

	@XmlElement(name="Total_categ")
	private int totalCateg;

	@XmlElement(name="Aff_ss_categ")
	private int affSsCateg;

	@XmlElement(name="Aff_pas_ss_categ")
	private int affPasSsCateg;

	@XmlElement(name="Total_ss_categ")
	private int totalSsCateg;

	@XmlElement(name="Devise_categ")
	private int deviseCateg;

	@XmlElement(name="Aff_nom_categ")
	private int affNomCateg;

	@XmlElement(name="IB")
	private int iB;

	@XmlElement(name="Detail_ib")
	private int detailIB;

	@XmlElement(name="No_ib", nillable=true)
	private String noIB;

	@XmlElement(name="Exclut_ib")
	private int exclutIB;

	@XmlElement(name="Total_ib")
	private int totalIB;

	@XmlElement(name="Aff_ss_ib")
	private int affSsIB;

	@XmlElement(name="Aff_pas_ss_ib")
	private int affPasSsIB;

	@XmlElement(name="Total_ss_ib")
	private int totalSsIB;

	@XmlElement(name="Devise_ib")
	private int deviseIB;

	@XmlElement(name="Aff_nom_ib")
	private int affNomIB;

	@XmlElement(name="Tiers")
	private int tiers;

	@XmlElement(name="Detail_tiers")
	private int detailTiers;

	@XmlElement(name="No_tiers", nillable=true)
	private String noTiers;

	@XmlElement(name="Total_tiers")
	private int totalTiers;

	@XmlElement(name="Devise_tiers")
	private int deviseTiers;

	@XmlElement(name="Aff_nom_tiers")
	private int affNomTiers;

	@XmlElement(name="Texte")
	private int texte;

	@XmlElementWrapper(name="Texte_comp", nillable=true)
	@XmlElement(name="Comp")
	private List<EtatTexteComp> texteComp;

	@XmlElement(name="Montant")
	private int montant;

	@XmlElement(name="Montant_devise")
	private int montantDevise;

	@XmlElement(name="Montant_comp", nillable=true)
	private String montantComp;

	@XmlElement(name="Excl_nul")
	private int exclNul;

	@XmlElement(name="Detail_mod_paie")
	private int detailModPaie;

	@XmlElement(name="Liste_mod_paie", nillable=true)
	private String listeModPaie;

	/**
	 * Méthode <code>toString()</code> utilisant la réflection pour détailler l'objet.
	 * 
	 * @see ToStringHelper#toString()
	 */
	@Override
	public String toString() {
		return ToStringHelper.toString(this);
	}
}
